home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 008 / plotstok.arc / PLTSTKFL.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1985-10-13  |  18.1 KB  |  455 lines

  1. 1  ' (PC)^3 Software Submission PLTSTKFL authored on January 4, 1983 by
  2. 2  '
  3. 3  ' Michael Csontos, 3228 Livonia Center Road, Lima, New York 14485
  4. 4  '
  5. 5  ' Copyright 1983 Michael Csontos
  6. 6  '
  7. 7  '  This program is made freely available non-exclusively to the Picture
  8. 8  '  City Personal Computer Programmers' Club for distribution to its members
  9. 9  '  and through software exchange to other users groups as long as credit is
  10. 10  ' given to the author and (PC)^3.
  11. 11  '
  12. 12  '
  13. 13  ' NOTE: The files PLTSTKFL.DOC, PLTSEQFL.DAT, and data files with the
  14. 14  ' extensions DJA, NYS, OTC, OPT, and MUT are associated with this program.
  15. 15  ' Also are PLTSEQFL.ALL, and MONEYMKT.INT.
  16. 16  '
  17. 10000  GOTO 12000
  18. 10100  Y=VAL(RIGHT$(DAT$,4))'  --------------------------------------------------
  19. 10200  D=VAL(MID$(DAT$,4,2))'   dat$ as mm-dd-yyyy     |  subroutine
  20. 10300  M=VAL(LEFT$(DAT$, 2))'    to  M,D,Y,M$,D$,Y$    |     to
  21. 10400  M2030=M+100:D2030=D+100'                        |  decompose
  22. 10500  M$=STR$(M2030):D$=STR$(D2030):Y$=STR$(Y)'       |    dates
  23. 10600  M$=RIGHT$(M$,2):D$=RIGHT$(D$,2):Y$=RIGHT$(Y$,4)'|    into
  24. 10700  RETURN'    -------------------------------------  strings & numbers  -----
  25. 10800  M3000=M:Y3000=Y'   -------------------------------------------------------
  26. 10900  IF M3000>2 THEN 11100'
  27. 11000  M3000=M3000+12:Y3000=Y3000-1'
  28. 11100  N=2+D+M3000*2+Y3000+INT(Y3000/4)-INT(Y3000/100)+INT(Y3000/400)+INT(0.6*(M3000+1))'
  29. 11200  ON 1+INT(1/2+(N/7-INT(N/7))*7) GOTO 11300,11400,11500,11600,11700,11800,11900'
  30. 11300  DAYNAME$="SAT.":RETURN'
  31. 11400  DAYNAME$="SUN.":RETURN'         Subroutine to give day of week
  32. 11500  DAYNAME$="MON.":RETURN'
  33. 11600  DAYNAME$="TUE.":RETURN'                     from
  34. 11700  DAYNAME$="WED.":RETURN'
  35. 11800  DAYNAME$="THU.":RETURN'            integers M, D, & Y.
  36. 11900  DAYNAME$="FRI.":RETURN'--------------------------------------------------
  37. 12000  KEY OFF:CLS:WIDTH "lpt1:",255
  38. 12100  LIN=CSRLIN:LOCATE 25,1:COLOR 0,7:PRINT STRING$(79," ");:COLOR 7,0:LOCATE LIN,1
  39. 12200  ON ERROR GOTO 12700
  40. 12300  OPEN "moneymkt.int" FOR INPUT AS #1
  41. 12400  INPUT #1, ANINT
  42. 12500  CLOSE #1:ON ERROR GOTO 0:GOTO 13100
  43. 12600  ON ERROR GOTO 0: GOTO 13200
  44. 12700  IF ERR=53 THEN NOINTFL=1:RESUME 12900
  45. 12800  ON ERROR GOTO 0
  46. 12900  ON ERROR GOTO 0
  47. 13000  PRINT:INPUT "Current money market fund interest rate (%)";ANINT
  48. 13100  IF ANINT<1 OR ANINT>100 THEN ANLMFR=0.1 ELSE ANLMFR=ANINT/100
  49. 13200  RESPMSG$="PRESS A NUMBER KEY CORRESPONDING TO YOUR SELECTION OR PRESS <Esc> TO QUIT."
  50. 13300  DIM GRAPH$(132)
  51. 13400  DIM MTH$(12):MTH$(1)="JAN.":MTH$(2)="FEB.":MTH$(3)="MAR.":MTH$(4)="APR.":MTH$(5)="MAY.":MTH$(6)="JUN.":MTH$(7)="JUL.":MTH$(8)="AUG.":MTH$(9)="SEP.":MTH$(10)="0CT.":MTH$(11)="NOV.":MTH$(12)="DEC."
  52. 13500  ON ERROR GOTO 13700' -----------------select task-----------------------
  53. 13600  OPEN "pltseqfl.dat" FOR INPUT AS #3:GOTO 13800
  54. 13700  NOSEQ=1:RESUME 13800
  55. 13800  ON ERROR GOTO 0
  56. 13900  ON ERROR GOTO 14000:OPEN "pltstkfl.doc" FOR INPUT AS #1:CLOSE #1:GOTO 14100
  57. 14000  NODOC=1:RESUME 14100
  58. 14100  ON ERROR GOTO 0:IF NOSEQ AND NODOC THEN 16300
  59. 14200  PRINT:PRINT "Do you want to ";
  60. 14300  IF NODOC THEN 14600
  61. 14400  PRINT "(1):  read the documentation file for this program,
  62. 14500  PRINT " or            (2):  plot a single securities file,
  63. 14600  IF NODOC=0 THEN 14700 ELSE PRINT "(2):  plot a single securities file,
  64. 14700  IF NOSEQ THEN 15000
  65. 14800  PRINT " or            (3):  plot all files for a single type of security,
  66. 14900  PRINT " or            (4):  plot all security files,
  67. 15000  PRINT " or            <Esc> to quit?":IF NOSEQ THEN 15300
  68. 15100  PRINT "     NOTE: The security must be listed in the file PLTSEQFL.DAT
  69. 15200  PRINT "           in order to be plotted in options 3 or 4.
  70. 15300  X$=INKEY$:IF X$="" THEN 15300 ELSE IF X$=CHR$(27) THEN 17200 ELSE AA=VAL(X$)
  71. 15400  IF AA<1 OR AA>4 THEN PRINT:PRINT RESPMSG$:GOTO 15300
  72. 15500  IF NOSEQ THEN IF AA<1 OR AA>2 THEN PRINT:PRINT RESPMSG$:GOTO 15300
  73. 15600  ON AA GOTO 15700,15800,15900,16000
  74. 15700  AA$="DOCUMENTATION":GOTO 16100
  75. 15800  AA$="SINGLE FILE":GOTO 16100
  76. 15900  AA$="SINGLE TYPE":GOTO 16100
  77. 16000  AA$="ALL FILES":GOTO 16100
  78. 16100  LIN=CSRLIN:LOCATE 25,60:COLOR 0,7:PRINT AA$;:COLOR 7,0:LOCATE LIN,1
  79. 16200  ON AA GOTO 52500
  80. 16300  PRINT'     ---------------- select type of plot - B -------------------
  81. 16400  PRINT "Do you want (1): a continuous plot of medium resolution,
  82. 16500  PRINT " or         (2): a continuous plot of fine resolution,
  83. 16600  PRINT " or         (3): 11 inch plot of the latest data in medium resolution,
  84. 16700  PRINT " or         (4): 11 inch plot of the latest data in fine resolution,
  85. 16800  PRINT " or            <Esc>: to quit?"
  86. 16900  X$=INKEY$:IF X$="" THEN 16900 ELSE IF X$=CHR$(27) THEN 17200 ELSE B=VAL(X$)
  87. 17000  IF B<1 OR B>4 THEN PRINT:PRINT RESPMSG$:GOTO 16900
  88. 17100  ON B GOTO 17300,17400,17500,17600
  89. 17200  KEY ON:END
  90. 17300  B$="MED. CONT.":GOTO 17700
  91. 17400  B$="FINE. CONT.":GOTO 17700
  92. 17500  B$="MED. 11 IN.":GOTO 17700
  93. 17600  B$="FINE 11 IN.":GOTO 17700
  94. 17700  LIN=CSRLIN:LOCATE 25,1:COLOR 0,7:PRINT B$;:COLOR 7,0:LOCATE LIN,1
  95. 17800  ON AA GOTO 17200,17900,17900,20000
  96. 17900  PRINT'     -------------- select type of file to be processed - C -----
  97. 18000  PRINT "Is the file for (1): Dow Jones Averages,
  98. 18100  PRINT " or             (2): New York Stock Exchange,
  99. 18200  PRINT " or             (3): Over the Counter Markets,
  100. 18300  PRINT " or             (4): Options,
  101. 18400  PRINT " or             (5): Mutual Funds,
  102. 18500  PRINT " or             <Esc>: to quit?"
  103. 18600  X$=INKEY$:IF X$="" THEN 18600 ELSE IF X$=CHR$(27) THEN 17200 ELSE C=VAL(X$)
  104. 18700  IF C<1 OR C>5 THEN PRINT:PRINT RESPMSG$:GOTO 18600
  105. 18800  ON C GOTO 18900,19000,19100,19200,19300
  106. 18900  EXT$=".DJA":GOTO 19400
  107. 19000  EXT$=".NYS":GOTO 19400
  108. 19100  EXT$=".OTC":GOTO 19400
  109. 19200  EXT$=".OPT":GOTO 19400
  110. 19300  EXT$=".MUT":GOTO 19400
  111. 19400  LIN=CSRLIN:LOCATE 25,15:COLOR 0,7:PRINT "FILE FOR " EXT$;:COLOR 7,0:LOCATE LIN,1
  112. 19500  ON AA GOTO 17200,19600,20000,20000
  113. 19600  GOSUB 37600 ' GETFILE  --------- select file - FILESPEC$ --------------
  114. 19700  IF NOFILE OR BADFILE THEN PRINT "PROGRAM TERMINATED":CLOSE:KEY ON:END
  115. 19800  LIN=CSRLIN:LOCATE 25,15:COLOR 0,7:PRINT "FILE FOR " FILESPEC$;:COLOR 7,0:LOCATE LIN,1
  116. 19900  IF C=1 OR C=2 OR C=3 THEN 20000 ELSE 21400' -- select data - DD -------
  117. 20000  PRINT
  118. 20100  PRINT "Do you want a plot of  (1): Prices,
  119. 20200  PRINT " or                    (2): Volume,
  120. 20300  PRINT " or                    (3): both (first Prices, then Volume),
  121. 20400  PRINT " or                    <Esc> to quit?"
  122. 20500  X$=INKEY$:IF X$="" THEN 20500 ELSE IF X$=CHR$(27) THEN 17200 ELSE DD=VAL(X$)
  123. 20600  IF DD<1 OR DD>4 THEN PRINT:PRINT RESPMSG$:GOTO 20500
  124. 20700  ON DD GOTO 20800,20900,21000
  125. 20800  PLOT$="PRICES":GOTO 21100
  126. 20900  PLOT$="VOLUME":GOTO 21100
  127. 21000  PLOT$="PRICES, THEN VOLUME":GOTO 21100
  128. 21100  LIN=CSRLIN:LOCATE 25,40:COLOR 0,7:PRINT PLOT$;:COLOR 7,0:LOCATE LIN,1
  129. 21200  ON AA GOTO 17200,21300,50600,50600
  130. 21300  ON DD GOTO 21400,34700,21400' ---------plot price data ----------------
  131. 21400  LPRINT CHR$(27) CHR$(64) CHR$(14) CHR$(27) CHR$(45) CHR$(1) CHR$(15) DATE$ "/" TIME$ CHR$(18) CHR$(27) CHR$(69) "     PRICE     " CHR$(27) CHR$(71) FILESPEC$ CHR$(27) CHR$(72) CHR$(27) CHR$(45) CHR$(0)
  132. 21500  IF B=3 OR B=4 THEN GOSUB 40500' skipdays
  133. 21600  ON C GOTO 21800,21800,28100,41600,28100'
  134. 21700  '----------------------------------------------------C = 1 or 2--------
  135. 21800  MAXHIGH=0:MINLOW=65000:SUMCLSE=0:DAYS=0
  136. 21900  IF EOF(1) THEN CLOSE #1:GOTO 22800' ------------determine scale-----------
  137. 22000  INPUT #1,ENDDATE$,VOLUME,HIGH,LOW,CLSE
  138. 22100  IF HIGH=0 THEN 22300
  139. 22200  IF HIGH>MAXHIGH THEN MAXHIGH=HIGH
  140. 22300  IF LOW=0 THEN 22500
  141. 22400  IF LOW<MINLOW THEN MINLOW=LOW
  142. 22500  IF CLSE=0 THEN 22700
  143. 22600  SUMCLSE=SUMCLSE+CLSE:DAYS=DAYS+1
  144. 22700  GOTO 21900
  145. 22800  AVERAGE=SUMCLSE/DAYS
  146. 22900  RANGE=MAXHIGH-MINLOW
  147. 23000  LPRINT CHR$(27) CHR$(70) CHR$(15) CHR$(27) CHR$(48);
  148. 23100  LPRINT "A = average closing value of all data plotted =";:LPRINT USING "####.###";AVERAGE;
  149. 23200  LPRINT "   The numbers to the right of the dates below are the daily closing prices."
  150. 23300  LPRINT "The lowest low plotted is ";:LPRINT USING "####.###";MINLOW;
  151. 23400  LPRINT ".  The highest high plotted is ";:LPRINT USING "####.###";MAXHIGH;
  152. 23500  LPRINT ".  That high is ";:LPRINT USING "####.#";(MAXHIGH-MINLOW)/MINLOW*100;:LPRINT "% greater than that low."
  153. 23600  LPRINT CHR$(27) CHR$(45) CHR$(1);
  154. 23700  LPRINT " M = The value of money equal to the average closing value at the start of the plot, compounded daily at ";:LPRINT USING "###.##";ANLMFR*100;:LPRINT "%/yr."
  155. 23800  LPRINT CHR$(27) CHR$(45) CHR$(0);
  156. 23900  IF B=2 OR B=4 THEN LPRINT CHR$(27) CHR$(83) CHR$(INT(VAL(RIGHT$(TIME$,1))/5)) CHR$(27) CHR$(65) CHR$(4);
  157. 24000  MULTIPLIER=130/RANGE
  158. 24100  OFFSET=MINLOW*MULTIPLIER-1
  159. 24200  AV=INT(MULTIPLIER*AVERAGE-OFFSET)
  160. 24300  MFND=AVERAGE:MFRATE=ANLMFR/255
  161. 24400  GOSUB 41000
  162. 24500  IF EOF(1) THEN 27700' ---------plot price data - C = 1 or 2------------
  163. 24600  MFND=MFND+MFND*MFRATE
  164. 24700  IF MFND>MAXHIGH THEN MFND=MAXHIGH
  165. 24800  MF=INT(MULTIPLIER*MFND-OFFSET)
  166. 24900  INPUT #1, DAT$,VOL,HIGH,LOW,CLSE
  167. 25000  IF HIGH=0 THEN HI=AV:GOTO 25200
  168. 25100  HI=INT(MULTIPLIER*HIGH-OFFSET)
  169. 25200  IF CLSE=0 THEN CL=AV:GOTO 25400
  170. 25300  CL=INT(MULTIPLIER*CLSE-OFFSET)
  171. 25400  IF LOW=0  THEN LO=AV:GOTO 25800
  172. 25500  LO=INT(MULTIPLIER*LOW-OFFSET)
  173. 25600  IF LO<40 THEN TEXT=1
  174. 25700  IF HI>90 THEN TEXT=0
  175. 25800  GOSUB 10100 ' decompose date
  176. 25900  GOSUB 10800 ' get DAYNAME$
  177. 26000  IF B=2 OR B=4 THEN IF DAYNAME$<>"FRI." AND TEXT=0 THEN LPRINT STRING$(27," ");:GOTO 26300
  178. 26100  TEXT$=DAYNAME$+" "+MTH$(M)+" "+D$+", "+Y$+" ####.###"
  179. 26200  IF TEXT=0 THEN LPRINT USING TEXT$;CLSE;
  180. 26300  FOR N=1 TO 132:GRAPH$(N)=" ":NEXT
  181. 26400  IF HIGH=0 AND LOW=0 AND CLSE=0 THEN GRAPH$(AV)="A":GOTO 27300
  182. 26500  FOR N=LO TO HI:GRAPH$(N)="#":NEXT
  183. 26600  IF HI<AV THEN FOR N=HI TO AV:GRAPH$(N)="-":NEXT
  184. 26700  IF AV<LO THEN FOR N=AV TO LO:GRAPH$(N)="-":NEXT
  185. 26800  GRAPH$(AV)="A"
  186. 26900  GRAPH$(MF)="M"
  187. 27000  GRAPH$(LO)="L"
  188. 27100  GRAPH$(HI)="H"
  189. 27200  GRAPH$(CL)="C"
  190. 27300  IF TEXT=0 THEN FOR N=28 TO 132:LPRINT GRAPH$(N);:NEXT:LPRINT:GOTO 24500
  191. 27400  FOR N=1 TO 100:LPRINT GRAPH$(N);:NEXT
  192. 27500  IF B=2 OR B=4 THEN IF DAYNAME$<>"FRI." THEN LPRINT:GOTO 24500
  193. 27600  LPRINT USING TEXT$;CLSE:GOTO 24500
  194. 27700  LPRINT TIME$:CLOSE #1
  195. 27800  IF B=3 OR B=4 THEN LPRINT CHR$(12) ELSE LPRINT:LPRINT
  196. 27900  IF DD=3 THEN 34700
  197. 28000  IF AA>2 THEN 50600 ELSE KEY ON:END
  198. 28100  '----------------------------------------------------C = 3 or 5--------
  199. 28200  MINBID=65000:MAXASK=0:SUMBID=0:DAYS=0
  200. 28300  IF EOF(1) THEN CLOSE #1:GOTO 29100' ------------determine scale-----------
  201. 28400  INPUT #1,ENDDATE$,VOLUME,BID,ASK,DUMP
  202. 28500  IF ASK=0 THEN 28700
  203. 28600  IF ASK>MAXASK THEN MAXASK=ASK
  204. 28700  IF BID=0 THEN 28300
  205. 28800  IF BID<MINBID THEN MINBID=BID
  206. 28900  SUMBID=SUMBID+BID:DAYS=DAYS+1
  207. 29000  GOTO 28300
  208. 29100  AVERAGE=SUMBID/DAYS
  209. 29200  RANGE=MAXASK-MINBID
  210. 29300  LOWER$="low":HIGHER$="high"
  211. 29400  IF C=3 THEN LOWER$="bid":HIGHER$="asked"
  212. 29500  IF C=5 THEN LOWER$="NAV":HIGHER$="offer"
  213. 29600  LPRINT CHR$(27) CHR$(70) CHR$(15) CHR$(27) CHR$(48);
  214. 29700  LPRINT "A = average " LOWER$ " price of all data plotted =";:LPRINT USING "####.###";AVERAGE;
  215. 29800  LPRINT "   The numbers to the right of the dates below are the daily " LOWER$ " prices."
  216. 29900  LPRINT "The lowest " LOWER$ " plotted is ";:LPRINT USING "####.###";MINBID;
  217. 30000  LPRINT ".  The highest " HIGHER$ " price plotted is ";:LPRINT USING "####.###";MAXASK;
  218. 30100  LPRINT ".  That high is ";:LPRINT USING "####.#";(MAXASK-MINBID)/MINBID*100;:LPRINT "% greater than that low."
  219. 30200  LPRINT CHR$(27) CHR$(45) CHR$(1);
  220. 30300  LPRINT " M = The value of money equal to the average " LOWER$ " value at the start of the plot, compounded daily at ";:LPRINT USING "###.##";ANLMFR*100;:LPRINT "%/yr."
  221. 30400  LPRINT CHR$(27) CHR$(45) CHR$(0);
  222. 30500  IF B=2 OR B=4 THEN LPRINT CHR$(27) CHR$(83) CHR$(INT(VAL(RIGHT$(TIME$,1))/5)) CHR$(27) CHR$(65) CHR$(4);
  223. 30600  MULTIPLIER=130/RANGE
  224. 30700  OFFSET=MINBID*MULTIPLIER-1
  225. 30800  AV=INT(MULTIPLIER*AVERAGE-OFFSET)
  226. 30900  MFND=AVERAGE:MFRATE=ANLMFR/255
  227. 31000  GOSUB 41000
  228. 31100  IF EOF(1) THEN 34300' ---------plot price data - C = 3 or 5------------
  229. 31200  MFND=MFND+MFND*MFRATE
  230. 31300  MF=INT(MULTIPLIER*MFND-OFFSET)
  231. 31400  INPUT #1, DAT$,VOL,BID,ASK,DUMP
  232. 31500  IF ASK=0 THEN AS=AV:GOTO 31700
  233. 31600  AS=INT(MULTIPLIER*ASK-OFFSET)
  234. 31700  IF BID=0  THEN BI=AV:GOTO 32100
  235. 31800  BI=INT(MULTIPLIER*BID-OFFSET)
  236. 31900  IF BI<40 THEN TEXT=1
  237. 32000  IF AS>90 THEN TEXT=0
  238. 32100  GOSUB 10100 ' decompose date
  239. 32200  GOSUB 10800 ' get DAYNAME$
  240. 32300  IF B=2 OR B=4 THEN IF DAYNAME$<>"FRI." AND TEXT=0 THEN LPRINT STRING$(27," ");:GOTO 32600
  241. 32400  TEXT$=DAYNAME$+" "+MTH$(M)+" "+D$+", "+Y$+" ####.###"
  242. 32500  IF TEXT=0 THEN LPRINT USING TEXT$;BID;
  243. 32600  FOR N=1 TO 132:GRAPH$(N)=" ":NEXT
  244. 32700  IF ASK=0 AND BID=0 THEN GRAPH$(AV)="A":GOTO 33900
  245. 32800  FOR N=BI TO AS:GRAPH$(N)="#":NEXT
  246. 32900  IF AS<AV THEN FOR N=AS TO AV:GRAPH$(N)="-":NEXT
  247. 33000  IF AV<BI THEN FOR N=AV TO BI:GRAPH$(N)="-":NEXT
  248. 33100  GRAPH$(MF)="M"
  249. 33200  GRAPH$(AV)="A"
  250. 33300  GRAPH$(BI)="L"
  251. 33400  GRAPH$(AS)="H"
  252. 33500  IF C=3 THEN GRAPH$(BI)="B"
  253. 33600  IF C=5 THEN GRAPH$(BI)="N"
  254. 33700  IF C=3 THEN GRAPH$(AS)="K"
  255. 33800  IF C=5 THEN GRAPH$(AS)="O"
  256. 33900  IF TEXT=0 THEN FOR N=28 TO 132:LPRINT GRAPH$(N);:NEXT:LPRINT:GOTO 31100
  257. 34000  FOR N=1 TO 100:LPRINT GRAPH$(N);:NEXT
  258. 34100  IF B=2 OR B=4 THEN IF DAYNAME$<>"FRI." THEN LPRINT:GOTO 31100
  259. 34200  LPRINT USING TEXT$;BID:GOTO 31100
  260. 34300  LPRINT TIME$:CLOSE #1
  261. 34400  IF B=3 OR B=4 THEN LPRINT CHR$(12) ELSE LPRINT:LPRINT
  262. 34500  IF DD=3 AND C=3 THEN 34700
  263. 34600  IF AA>2 THEN 50600 ELSE KEY ON:END
  264. 34700  '-----------------------------PLOT VOLUME DATA-------------------------
  265. 34800  LPRINT CHR$(27) CHR$(64) CHR$(14) CHR$(27) CHR$(45) CHR$(1) CHR$(15) DATE$ "/" TIME$ CHR$(18) CHR$(27) CHR$(69) "    VOLUME    " CHR$(27) CHR$(71) FILESPEC$ CHR$(27) CHR$(72) CHR$(27) CHR$(45) CHR$(0)
  266. 34900  IF B=3 OR B=4 THEN IF DD=3 THEN GOSUB 41000 ELSE GOSUB 40500' skipdays
  267. 35000  IF B=1 OR B=2 THEN IF DD=3 THEN OPEN FILESPEC$ FOR INPUT AS #1
  268. 35100  INPUT #1, STARTDATE$,MAXVOL,HIGH,LOW,CLSE
  269. 35200  IF EOF(1) THEN CLOSE #1:GOTO 35600
  270. 35300  INPUT #1, ENDDATE$,VOL,HIGH,LOW,CLSE
  271. 35400  IF VOL>MAXVOL THEN MAXVOL=VOL
  272. 35500  GOTO 35200
  273. 35600  LPRINT:LPRINT " V = the volume traded on the day.
  274. 35700  LPRINT CHR$(27) CHR$(70) CHR$(15) CHR$(27) CHR$(48);
  275. 35800  IF B=2 OR B=4 THEN LPRINT CHR$(27) CHR$(83) CHR$(INT(VAL(RIGHT$(TIME$,1))/5)) CHR$(27) CHR$(65) CHR$(4);
  276. 35900  MULTIPLIER=100/MAXVOL
  277. 36000  GOSUB 41000
  278. 36100  IF EOF(1) THEN CLOSE #1:GOTO 37400
  279. 36200  INPUT #1, DAT$,VOL,HIGH,LOW,CLSE
  280. 36300  VL=INT(MULTIPLIER*VOL)
  281. 36400  GOSUB 10100:GOSUB 10800' decompose date and get dayname
  282. 36500  IF B=2 OR B=4 THEN IF DAYNAME$<>"FRI." THEN LPRINT STRING$(27," ");:GOTO 36900
  283. 36600  TEXT$=DAYNAME$+" "+MTH$(M)+" "+D$+", "+Y$+"#########"
  284. 36700  IF C=3 OR C=4 THEN VOL=VOL*100
  285. 36800  LPRINT USING TEXT$;VOL;
  286. 36900  FOR N=1 TO 102:GRAPH$(N)=" ":NEXT
  287. 37000  FOR N=1 TO VL:GRAPH$(N)="#":NEXT
  288. 37100  GRAPH$(VL)="V":GRAPH$(1)=CHR$(156)
  289. 37200  FOR N=1 TO 102:LPRINT GRAPH$(N);:NEXT
  290. 37300  LPRINT:GOTO 36100
  291. 37400  IF B=3 OR B=4 THEN LPRINT CHR$(12) ELSE LPRINT:LPRINT
  292. 37500  IF AA>2 THEN 50600 ELSE KEY ON:END
  293. 37600  ON ERROR GOTO 39100:NOFILE=0'  ------------GETFILE---------------------
  294. 37700  IF ERR=62 THEN PRINT "Bad file data. You are trying to read from the wrong file. Try again.":RESUME 37600
  295. 37800  PRINT:PRINT "The following files are on the disk.":FILES "*"+EXT$
  296. 37900  ON ERROR GOTO 0
  297. 38000  PRINT:PRINT "What is the filename of the one you want to use":INPUT "(if none type NONE)";FI$
  298. 38100  FILENAME$=""
  299. 38200  FOR N=1 TO LEN(FI$):LTR$=MID$(FI$,N,1)
  300. 38300  IF "a"<=LTR$ AND LTR$<="z" THEN LTR$=CHR$(ASC(LTR$)-32)
  301. 38400  FILENAME$=FILENAME$+LTR$
  302. 38500  NEXT N
  303. 38600  IF FILENAME$="NONE" THEN NOFILE=1:RETURN
  304. 38700  FILESPEC$=FILENAME$+EXT$
  305. 38800  ON ERROR GOTO 39100:OPEN FILESPEC$ FOR INPUT AS #1
  306. 38900  ON ERROR GOTO 0:RETURN
  307. 39000  '-----------------------disk error handling----------------------------
  308. 39100  IF ERR=24 THEN PRINT "No disk in drive? Device timeout.":GOTO 40400
  309. 39200  IF ERR=52 THEN PRINT "Bad file name. ":RESUME 38000
  310. 39300  IF ERR=53 AND ERL=37800 THEN PRINT "There are do files for this type of security on this disk.":NOFILE=1:RESUME 38900
  311. 39400  IF ERR=53 AND ERL=38800 THEN PRINT "The disk has no file by that name.:resume 23600
  312. 39500  IF ERR=57 THEN PRINT "I/O error. Try another disk.":GOTO 40400
  313. 39600  IF ERR=61 THEN PRINT "Disk full. Try another disk.":GOTO 40400
  314. 39700  IF ERR=64 THEN PRINT "Bad file name. ":RESUME 38000
  315. 39800  IF ERR=67 THEN PRINT "Too many files in directory. Try another disk to temoroarily save your data.":GOTO 40400
  316. 39900  IF ERR=68 THEN PRINT "Disk drive unavailable.":GOTO 40400
  317. 40000  IF ERR=70 THEN PRINT "You have write protected this disk!":GOTO 40400
  318. 40100  IF ERR=71 THEN PRINT "No disk in drive or door not closed.":GOTO 40400
  319. 40200  IF ERR=72 THEN PRINT "Disk Media Error. Try another disk.":GOTO 40400
  320. 40300  PRINT:PRINT "DISK PROBLEM ";:CLOSE:ON ERROR GOTO 0:KEY ON:END
  321. 40400  PRINT "Program will continue when problem is corrected.":LOCATE CSRLIN-2,1:RESUME
  322. 40500  DAYSS=0'    ----------------------------------------skipdays start-------
  323. 40600  IF EOF(1) THEN CLOSE #1:GOTO 40900
  324. 40700  INPUT #1, DUMP$:FOR N=1 TO 4: INPUT #1, DUMP:NEXT
  325. 40800  DAYSS=DAYSS+1:GOTO 40600
  326. 40900  IF B=3 THEN SKIP=DAYSS-80 ELSE SKIP=DAYSS-200
  327. 41000  OPEN FILESPEC$ FOR INPUT AS #1' -----------skipdays after first pass----
  328. 41100  IF SKIP<=0 THEN RETURN
  329. 41200  FOR SK=1 TO SKIP
  330. 41300  INPUT #1, DUMP$:FOR N=1 TO 4:INPUT #1, DUMP:NEXT N
  331. 41400  NEXT SK
  332. 41500  RETURN'    ----------------------------------------skipdays end---------
  333. 41600  '----------------------------------OPTIONS----------- C = 4 ------------
  334. 41700  MAXCAL=0:MAXPTT=0:MAXL=0:MINCAL=65000:MINPTT=65000:MINL=65000
  335. 41800  IF EOF(1) THEN CLOSE #1:GOTO 43100' -----------determine scale--------
  336. 41900  INPUT #1,ENDDATE$,DUMP,CAL,PTT,CLSE
  337. 42000  IF CAL=0 THEN 42300
  338. 42100  IF CAL>MAXCAL THEN MAXCAL=CAL
  339. 42200  IF CAL<MINCAL THEN MINCAL=CAL
  340. 42300  IF PTT=0 THEN 42600
  341. 42400  IF PTT<MINPTT THEN MINPTT=PTT
  342. 42500  IF PTT>MAXPTT THEN MAXPTT=PTT
  343. 42600  IF CLSE=0 THEN 43000
  344. 42700  LLL=CLSE-CAL:TTT=CLSE+PTT
  345. 42800  IF LLL<MINL THEN MINL=LLL
  346. 42900  IF TTT>MAXT THEN MAXT=TTT
  347. 43000  GOTO 41800
  348. 43100  RANGECAL=MAXCAL-MINCAL
  349. 43200  RANGEPTT=MAXPTT-MINPTT
  350. 43300  RANGEUUU=MAXT-MINL
  351. 43400  LPRINT CHR$(27) CHR$(70) CHR$(15) CHR$(27) CHR$(48);
  352. 43500  LPRINT "P = PUT price.  C = CALL price.   U = closing price of underlying stock. L = U - C.  T = U + P.   S = strike price (from FILENAME).
  353. 43600  LPRINT "   The numbers to the right of the dates below are L  and T in that order.  P, C, & L-U-S-T scales are completely independent.
  354. 43700  LPRINT "The lowest PUT is:";:LPRINT USING "####.###";MINPTT;
  355. 43800  LPRINT ".  The highest PUT is:";:LPRINT USING "####.###";MAXPTT;
  356. 43900  LPRINT ".  This is a ";:LPRINT USING "####.#";(MAXPTT-MINPTT)/MINPTT*100;:LPRINT "% increase or a ";:LPRINT USING "####.#";(MAXPTT-MINPTT)/MAXPTT*100;:LPRINT "% decrease."
  357. 44000  LPRINT CHR$(27) CHR$(45) CHR$(1);
  358. 44100  LPRINT "The lowest CALL is:";:LPRINT USING "####.###";MINCAL;
  359. 44200  LPRINT ".  The highest CALL is:";:LPRINT USING "####.###";MAXCAL;
  360. 44300  LPRINT ".  This is a ";:LPRINT USING "####.#";(MAXCAL-MINCAL)/MINCAL*100;:LPRINT "% increase or a ";:LPRINT USING "####.#";(MAXCAL-MINCAL)/MAXCAL*100;:LPRINT "% decrease."
  361. 44400  LPRINT CHR$(27) CHR$(45) CHR$(0);
  362. 44500  IF B=2 OR B=4 THEN LPRINT CHR$(27) CHR$(83) CHR$(INT(VAL(RIGHT$(TIME$,1))/5)) CHR$(27) CHR$(65) CHR$(4);
  363. 44600  MULTIPLCAL=105/RANGECAL
  364. 44700  MULTIPLPTT=105/RANGEPTT
  365. 44800  MULTIPLUUU=105/RANGEUUU
  366. 44900  OFFCAL=MINCAL*MULTIPLCAL-2
  367. 45000  OFFPTT=MINPTT*MULTIPLPTT-2
  368. 45100  OFFUUU=MINL*MULTIPLUUU-2
  369. 45200  STRIKE=VAL(RIGHT$(FILENAME$,2))
  370. 45300  ST=INT(MULTIPLUUU*STRIKE-OFFUUU)
  371. 45400  GOSUB 41000
  372. 45500  CL=INT(MULTIPLUUU*CLSE-OFFUUU)
  373. 45600  CA=INT(MULTIPLCAL*CAL-OFFCAL)
  374. 45700  LLL=CLSE-CAL
  375. 45800  LL=INT(MULTIPLUUU*LLL-OFFUUU)
  376. 45900  PT=INT(MULTIPLPTT*PTT-OFFPTT)
  377. 46000  TTT=CLSE+PTT
  378. 46100  TT=INT(MULTIPLUUU*TTT-OFFUUU)
  379. 46200  IF EOF(1) THEN 50200' ---------plot price data - C = 4 OPTIONS---------
  380. 46300  INPUT #1, DAT$,DUMP,CAL,PTT,CLSE
  381. 46400  IF CLSE=0 THEN 46600
  382. 46500  CL=INT(MULTIPLUUU*CLSE-OFFUUU)
  383. 46600  IF CAL=0 THEN 47100
  384. 46700  CA=INT(MULTIPLCAL*CAL-OFFCAL)
  385. 46800  IF CLSE=0 THEN 47100
  386. 46900  LLL=CLSE-CAL
  387. 47000  LL=INT(MULTIPLUUU*LLL-OFFUUU)
  388. 47100  IF PTT=0 THEN 47700
  389. 47200  LLL=CLSE-CAL
  390. 47300  PT=INT(MULTIPLPTT*PTT-OFFPTT)
  391. 47400  IF CLSE=0 THEN 47700
  392. 47500  TTT=CLSE+PTT
  393. 47600  TT=INT(MULTIPLUUU*TTT-OFFUUU)
  394. 47700  GOSUB 10100 ' decompose date
  395. 47800  GOSUB 10800 ' get DAYNAME$
  396. 47900  IF B=2 OR B=4 THEN IF DAYNAME$<>"FRI." THEN LPRINT STRING$(21," ");:GOTO 48300
  397. 48000  TEXT$=MTH$(M)+" "+D$+"###.###"
  398. 48100  IF CAL=0 AND PTT=0 AND CLSE=0 THEN LLL=0:TTT=0
  399. 48200  LPRINT USING TEXT$;LLL;:LPRINT USING "###.###";TTT;
  400. 48300  FOR N=1 TO 132:GRAPH$(N)=" ":NEXT
  401. 48400  IF CAL=0 AND PTT=0 AND CLSE=0 THEN LPRINT:GOTO 46200
  402. 48500  IF CAL=0 THEN 48700
  403. 48600  FOR N= LL TO CL:GRAPH$(N)="-":NEXT
  404. 48700  IF PTT=0 THEN 48900
  405. 48800  FOR N= CL TO TT:GRAPH$(N)="+":NEXT
  406. 48900  GRAPH$(ST)="S"
  407. 49000  IF PTT=0 THEN 49200
  408. 49100  GRAPH$(TT)="T"
  409. 49200  IF CAL=0 THEN 49400
  410. 49300  GRAPH$(LL)="L"
  411. 49400  GRAPH$(CL)="U"
  412. 49500  IF PTT=0 THEN 49700
  413. 49600  GRAPH$(PT-1)="#":GRAPH$(PT)="P":GRAPH$(PT+1)="#"
  414. 49700  IF CAL=0 THEN 49900
  415. 49800  GRAPH$(CA-1)="#":GRAPH$(CA)="C":GRAPH$(CA+1)="#"
  416. 49900  GRAPH$(0)=CHR$(156)
  417. 50000  FOR N=0 TO 109:LPRINT GRAPH$(N);:NEXT
  418. 50100  LPRINT :GOTO 46200
  419. 50200  LPRINT TIME$:CLOSE #1
  420. 50300  IF B=3 OR B=4 THEN LPRINT CHR$(12) ELSE LPRINT:LPRINT
  421. 50400  IF AA>2 THEN 50600 ELSE KEY ON:END
  422. 50500  '----------------------------READ SEQUENCE FILE------------------------
  423. 50600  IF EOF(3) THEN CLOSE #3:KEY ON:END
  424. 50700  INPUT #3, FI$
  425. 50800  FILESPEC$=""
  426. 50900  FOR N=1 TO LEN(FI$):LTR$=MID$(FI$,N,1)
  427. 51000  IF "a"<=LTR$ AND LTR$<="z" THEN LTR$=CHR$(ASC(LTR$)-32)
  428. 51100  FILESPEC$=FILESPEC$+LTR$
  429. 51200  NEXT N
  430. 51300  SECTYPE$=RIGHT$(FILESPEC$,4)
  431. 51400  NAMELENGTH=INSTR(FILESPEC$,".")-1
  432. 51500  FILENAME$=LEFT$(FILESPEC$,NAMELENGTH)
  433. 51600  IF AA=3 THEN 52400
  434. 51700  EXT$=SECTYPE$
  435. 51800  IF EXT$=".DJA" THEN C=1
  436. 51900  IF EXT$=".NYS" THEN C=2
  437. 52000  IF EXT$=".OTC" THEN C=3
  438. 52100  IF EXT$=".OPT" THEN C=4
  439. 52200  IF EXT$=".MUT" THEN C=5
  440. 52300  OPEN FILESPEC$ FOR INPUT AS #1:GOTO 21300
  441. 52400  IF SECTYPE$=EXT$ THEN 52300 ELSE 50600
  442. 52500  OPEN "PLTSTKFL.DOC" FOR INPUT AS #1 '-------------READ DOCUMENTATION-----
  443. 52600  PRINT:PRINT:PRINT:PRINT
  444. 52700  FOR N=1 TO 20
  445. 52800  IF EOF(1) THEN ENDDOC=1:GOTO 53200
  446. 52900  LINE INPUT #1, DOCULINE$
  447. 53000  PRINT DOCULINE$
  448. 53100  NEXT N
  449. 53200  LIN=CSRLIN:LOCATE 25,1:COLOR 0,7:PRINT "Press any key to continue except <Esc>, which will the program.                ";:COLOR 7,0:LOCATE LIN,1
  450. 53300  X$=INKEY$:IF X$="" THEN 53300 ELSE IF X$=CHR$(27) THEN 17200 ELSE 53400
  451. 53400  LIN=CSRLIN:LOCATE 25,1:COLOR 0,7:PRINT STRING$(79," ");:COLOR 7,0:LOCATE LIN,1
  452. 53500  IF ENDDOC THEN CLOSE #1:ENDDOC=0:PRINT:PRINT:PRINT:PRINT "END OF DOCUMENTATION FILE":PRINT:PRINT:GOTO 14200
  453. 53600  GOTO 52700
  454. 65000  '         SAVE"pltstkfl.bas",a
  455.